「自然语言处理(NLP)」良心推荐:一文了解注意力机制(Attention)
喜欢我们,点击上方AINLPer,关注一下,极品干货即刻送达!
引言
相信很多小伙伴在看论文的时候,会时不时的遇到注意力机制(Attention)这个关键词。其实注意力模型最近几年在深度学习各个领域被广泛使用,无论是在图像处理、语音识别还是自然语言处理中,都很容易遇到注意力模型的身影。它其实是深度学习技术中最值得关注与深入了解的核心技术之一。了解注意力机制的工作原理对于关注深度学习技术发展的技术人员来说有很大的必要。
1
什么是注意力机制(Attention)
2
Encoder-Decoder框架
3
Attention注意力机制
4
Attention小结
正文开始
1什么是注意力机制(Attention) 深度学习中的注意力机制借鉴了人类的注意力思维方式。我们首先人类的视觉注意力机制介绍开始。举个例子:比如当你看到一篇论文的时候,你的眼睛会快速的扫描论文第一页,接着首先将注意力集中到论文的标题(如果论文的第一页有图片,你也会去关注第一页中的图片是什么),然后你就会关注论文的摘要是什么,对于摘要区域,你会渐渐投入到更多地注意力,然后读懂摘要,进而了解文章的大概内容。这其实是人类利用有限的注意力资源从大量信息中快速筛选出高价值信息的手段,是人类在长期进化中形成的一种生存机制。人类视觉注意力机制极大地提高了视觉信息处理的效率与准确性。
上图就是介绍注意力机制最经典的示例图,其中红色区域表明视觉系统更关注的目标。深度学习中的注意力机制从本质上讲和人类的选择性视觉注意力机制类似,核心目标也是从众多信息中选择出对当前任务目标更关键的信息。
要了解深度学习中的注意力模型,就不得不先谈Encoder-Decoder框架,因为目前大多数注意力模型附着在Encoder-Decoder框架下,当然,其实注意力模型可以看作一种通用的思想,本身并不依赖于特定框架,这点需要注意。
Encoder-Decoder框架可以看作是一种深度学习领域的研究模式,应用场景异常广泛。下图是是文本处理领域里常用的Encoder-Decoder框架最抽象的一种表示。
我们选取Encoder和Decoder都是RNN。在RNN中,当前时刻隐藏层状态
在编码阶段,获得了各个时刻的隐藏层状态后,我们把这些隐藏层的状态进行汇总,生成最后的语义编码向量C,如公式(2)所示,其中q表示某种非线性神经网络,在这里表示多层RNN。
一种简单的方法是将最后的隐藏层状态作为语义编码向量C,即公式(3)所示。
在解码阶段,我们要根据给定的语义向量C和之前已经生成的输出序列
公式(4)可以简写成公式(5)。
而在RNN中,公式(5)可以表示为公式(6)。
公式(6)中,
Encoder-Decoder框架虽然非常经典,但是局限性也非常大。主要两大局限性
一、最大的局限性就在于编码器和解码器之间的唯一联系就是一个固定长度的语义向量C。也就是说,编码器要将整个序列的信息压缩进一个固定长度的向量中。这样做存在两个弊端,一是语义向量C可能无法完全表示整个序列的信息;
二、先输入到网络的内容携带的信息会被后输入的信息覆盖掉,输入序列越长,这个现象就越严重。这两个弊端使得在解码的时候解码器一开始就没有获得输入序列足够多的信息, 那么解码的准确度自然也就不高了。
为了解决Encoder-Decoder框架中的两个弊端,Bahdanau等人在论文《Neural Machine Translation by Jointly Learning to Align and Translate》中提出使用Attention机制。在深度学习领域,该论文是非常有影响力且具有开创性的,文中提出的Attention机制不仅应用于机器翻译中,还被推广到了其他应用领域。因此,该论文提出的Attention机制是非常值得深入学习。
上图展示了Bahdanau等人提出的机器翻译模型,在该模型中编码器就比较普通了,只是用了双向循环神经网络。在前向RNN中,数据是按顺序输入的,因此第j个隐藏层状态
上图中展示的机器翻译模型中,编码过程相当简单,我们主要看一下解码的过程。
第一步,计算各个编码器隐藏层状态
其中
第二步,对
第三步,有了
这里的Attention机制采用的是Soft Attention,也就是对所有的编码器隐藏层状态
Attention机制最重要的步骤是如何在每一时刻产生不同的语言编码向量
相比于原始的Encoder-Decoder模型,加入Attention机制后最大的区别就是它不在要求编码器将所有输入信息都编码进一个固定长度的向量之中。而是,编码器需要将输入编码成一个向量的序列,在解码的时候,每一步都会选择性的从向量序列中挑选一个子集进行进一步处理。这样,在产生每一个输出的时候,都能够做到充分利用输入序列携带的信息。而且这种方法在翻译任务中取得了非常不错的成果。
收藏!「自然语言处理(NLP)」AINLPer 大 盘 点 !!
收藏!「自然语言处理(NLP)」全球学术界”巨佬“信息大盘点(一)!
论文阅读
长按识别下方二维码,关注我们吧(づ ̄3 ̄)❤~
来都来了,点个【好看】再走吧~~~